package daoImpl;

import org.apache.log4j.Logger;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

import util.HibernateUtil;
import dao.PessoaDao;
import entities.Pessoa;

public class PessoaDaoImpl implements PessoaDao{

	private static Logger log = Logger.getLogger(PessoaDaoImpl.class);

	private static PessoaDao pessoaDaoImpl = null;


	public static PessoaDao getInstance(){
		if(pessoaDaoImpl == null){
			pessoaDaoImpl = new PessoaDaoImpl();			
		}

		return pessoaDaoImpl;
	}


	// CADASTRO
	@Override
	public void cadastrarPessoa(Pessoa pessoa) throws HibernateException  {

		log.debug("Inicio do metodo PessoaDaoImpl.cadastrarPessoa. Iniciando o " +
				"cadastro dos seguintes dados: " + pessoa);


		Session session =  HibernateUtil.getSessionFactory().openSession();
		Transaction tx = session.beginTransaction();

		try{
			session.saveOrUpdate(pessoa);
			tx.commit();
		}
		catch(HibernateException e){
			log.error(e);
			tx.rollback();
			throw e;
		}
		finally{
			session.close();
		}
	}
}
